﻿#ifndef DEF_H
#define DEF_H

#include <QGraphicsItem>

//游戏模式
enum GameMode {
    StandardMode = 0,    // 标准模式
    PassMode = 1,        // 闯关模式
};

//砖块种类
enum BlockType {
    NormalBlock = QGraphicsItem::UserType + 1,      // 标准砖块
    PassModeBlock = QGraphicsItem::UserType + 2,    // 过关模式砖块
    AddBlock = QGraphicsItem::UserType + 3,         // 填充弹
    RemoveBlock = QGraphicsItem::UserType + 4,      // 消除弹
};

//砖块种类
enum BlockMode{
    BasicBlock = 0,          //基本
    Extendblock = 1,        //变体
};

//记录信息
struct Record
{
    int score;                // 分数
    QString name;             // 玩家名
    QTime play_time;          // 游戏时间(ms)
    int pass_difficulty;      // 闯关难度
    QDateTime record_time;    // 记录创建时间
    QTime time_pass0;         // 通关难度0的时间
    QTime time_pass1;         // 通关难度1的时间
    QTime time_pass2;         // 通关难度2的时间
    QTime time_pass3;         // 通关难度3的时间
    QTime time_pass4;         // 通关难度4的时间
    QTime time_pass5;         // 通关难度5的时间
    QTime time_pass6;         // 通关难度6的时间
    QTime time_pass7;         // 通关难度7的时间
    QTime time_pass8;         // 通关难度8的时间
    QTime time_pass9;         // 通关难度9的时间

    friend QDataStream &operator<<(QDataStream &out, const Record str) {
        out << str.score << str.name << str.play_time << str.record_time << str.pass_difficulty
            << str.time_pass0 << str.time_pass1 << str.time_pass2 << str.time_pass3 << str.time_pass4
            << str.time_pass5 << str.time_pass6 << str.time_pass7 << str.time_pass8 << str.time_pass9;
        return out;
    }
    friend QDataStream &operator>>(QDataStream &in, Record &str) {
        in >> str.score >> str.name >> str.play_time >> str.record_time >> str.pass_difficulty
                >> str.time_pass0 >> str.time_pass1 >> str.time_pass2 >> str.time_pass3 >> str.time_pass4
                >> str.time_pass5 >> str.time_pass6 >> str.time_pass7 >> str.time_pass8 >> str.time_pass9;
        return in;
    }
};

Q_DECLARE_METATYPE(Record)



#endif // DEF_H
